#ifndef D_VEC3F_H
#define D_VEC3F_H

#include <iostream>

using namespace std;

namespace d_Math
{
	class d_Vec3f
	{
	public:
		float p[3];
		d_Vec3f();  //Initialize to zero everything
		d_Vec3f(float x, float y, float z); //Put values
		d_Vec3f(const d_Vec3f &v); //Copy constructor
		float &operator [] (int i);
		float operator [] (int i) const;
		d_Vec3f operator + (const d_Vec3f v) const;
		d_Vec3f operator - (const d_Vec3f v) const;
		d_Vec3f operator * (const d_Vec3f a) const;
		d_Vec3f operator * (const float a) const;
		d_Vec3f operator / (const float a) const;
		void operator +=(const d_Vec3f v);
		void operator -=(const d_Vec3f v);
		
	};

	inline ostream &operator<<(ostream &os, const d_Vec3f &v) 
	{
	  os << "(" << v[0] <<", "<< v[1] << ", " << v[2] <<")";
	  return os;
	}
}

#endif

